package com.hd.until;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;


import org.testng.annotations.Test;

@Test
public class DBUtil{

	private static String url = "jdbc:oracle:thin:@172.16.52.48:1521:ecfdb";
	private static String username = "yuweiping";
	private static String password = "yuweiping";
	
	private static String mysql_url = "jdbc:mysql://172.16.52.40:43306/ecf_ucenter";
	private static String mysql_username = "yuweiping";
	private static String mysql_password = "yuweiping";
	
	
	static Connection con = null;// 创建一个数据库连接
	static PreparedStatement pre = null;// 创建预编译语句对象，一般都是用这个而不用Statement
	static ResultSet result = null;// 创建一个结果集对象
	
	@Test
	public static ResultSet oracleUtilForQuery(String sql)
	{
	    
	    try
	    {
	        Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
	        System.out.println("开始尝试连接数据库！");
	        con = DriverManager.getConnection(url, username, password);// 获取连接
	        System.out.println("连接成功！");
//	        String sql = "select * from u_ecf.system_setup where 1=1";// 预编译语句，“？”代表参数
	        pre = con.prepareStatement(sql);// 实例化预编译语句
	        result = pre.executeQuery();// 执行查询，注意括号中不需要再加参数
//	        ResultSetMetaData rsmd = result.getMetaData();
	        String str="";
	        while (result.next())
	        for(int i=1;i<result.getMetaData().getColumnCount();i++){  
                str+=result.getString(i)+",";  
                System.err.println(str);
            }  
	        str=str.substring(0, str.length()-1);
	        System.err.println(str);
//	        while (result.next()){
//	        	// 当结果集不为空时
//	            System.out.println("batchdate:====" + result.getString("batchdate"));
//	        }	        	        
//	            
	    }
	    catch (Exception e)
	    {
	        e.printStackTrace();
	    }
	    finally
	    {
	        try
	        {
	            // 逐一将上面的几个对象关闭，因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序，最后使用的最先关闭
	            if (result != null)
	                result.close();
	            if (pre != null)
	                pre.close();
	            if (con != null)
	                con.close();
	            System.out.println("数据库连接已关闭！");
	        }
	        catch (Exception e)
	        {
	            e.printStackTrace();
	        }
	    }
	    return result;
	}
	
	
	@Test
	public static boolean oracleUtilForUpdate(String sql)
	{
		boolean flag=false;
	    try
	    {
	        Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
	        System.out.println("开始尝试连接数据库！");
	        con = DriverManager.getConnection(url, username, password);// 获取连接
	        System.out.println("连接成功！");
	        pre = con.prepareStatement(sql);// 实例化预编译语句
	        int result = pre.executeUpdate(sql);// 执行查询，注意括号中不需要再加参数
	        con.commit();//提交操作
	        if(result >0){
	        	flag = true;
	        }
	    }
	    catch (Exception e)
	    {
	        e.printStackTrace();
	    }
	    finally
	    {
	        try
	        {
	            // 逐一将上面的几个对象关闭，因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序，最后使用的最先关闭
	            if (result != null)
	                result.close();
	            if (pre != null)
	                pre.close();
	            if (con != null)
	                con.close();
	            System.out.println("数据库连接已关闭！");
	        }
	        catch (Exception e)
	        {
	            e.printStackTrace();
	        }
	    }
	    return flag;
	}
	
	
	@Test
	public static String mySQLUtilForQuery(String sql){
		
        //驱动程序名
        String driver = "com.mysql.jdbc.Driver";
        String str="";
        try {
            //加载驱动程序
            Class.forName(driver);
            //1.getConnection()方法，连接MySQL数据库！！
            con = DriverManager.getConnection(mysql_url,mysql_username,mysql_password);
            if(!con.isClosed())
                System.out.println("mysql数据库连接成功");
            //2.创建statement类对象，用来执行SQL语句！！
            pre = con.prepareStatement(sql);
          
            //3.ResultSet类，用来存放获取的结果集！！
            result = pre.executeQuery();
	        while (result.next())
	        for(int i=1;i<result.getMetaData().getColumnCount();i++){  
                str+=result.getString(i)+",";  
            }  
	        str=str.substring(0, str.length()-1);
        }
	    catch (Exception e)
	    {
	        e.printStackTrace();
	    }
	    finally
	    {
	        try
	        {
	            // 逐一将上面的几个对象关闭，因为不关闭的话会影响性能、并且占用资源
	            // 注意关闭的顺序，最后使用的最先关闭
	            if (result != null)
	                result.close();
	            if (pre != null)
	                pre.close();
	            if (con != null)
	                con.close();
	            System.out.println("mysql数据库连接已关闭！");
	        }
	        catch (Exception e)
	        {
	            e.printStackTrace();
	        }
	    }
		return str;
	}
	public static void main(String[] args) throws SQLException {
		DBUtil db = new DBUtil();
//		db.oracleUtilForUpdate("insert into u_ecf.customer_whitelist values ('12345678',1,'测试','','','','',1)");
		String sql = "SELECT * FROM ecf_ucenter.`t_ucenter_property_owner` t2 WHERE t2.`jsd_status`='1' AND t2.`jsd_marketing_flag`='1' AND user_uuid = '' LIMIT 1";
		String result1 = db.mySQLUtilForQuery(sql);
		String[] dd = result1.split(",");
		System.out.println(result1);
		System.out.println(dd[1]);
	
	}
	

}
